package com.ncucoder.soms.service;

import com.ncucoder.soms.dto.CreateUserDTO;
import com.ncucoder.soms.dto.DisplayUserDTO;
import com.ncucoder.soms.dto.UpdateUserDTO;
import com.ncucoder.soms.entity.User;

import java.util.Date;
import java.util.List;
import java.util.Set;

/**
 * 用户的业务逻辑接口
 *
 * @author <a href="https://www.ncucoder.com">hsowan</a>
 * @date Jul 4, 2019
 */
public interface UserService {

    /**
     * 更新最近一次登录时间
     *
     * @param username
     * @param loginTime
     * @return
     */
    int updateLastLoginByUsername(String username, Date loginTime);

    /**
     * 修改用户密码
     *
     * @param newPassword
     * @param username
     * @return
     */
    int updatePasswordByUsername(String newPassword, String username);

    /**
     *
     * @param page
     * @param pageSize
     * @return
     */
    List<DisplayUserDTO> listUsers(int page, int pageSize);

    /**
     * 通过用户ID删除用户
     *
     * @param id
     * @return
     */
    int deleteUserById(Long id);

    /**
     * 创建新用户
     *
     * @param createUserDTO
     * @return
     */
    int createUser(CreateUserDTO createUserDTO);

    /**
     * 得到用户总数
     *
     * @return
     */
    int countUsers();

    /**
     * 通过用户名获取用户
     *
     * @param username
     * @return
     */
    User getUserByUsername(String username);

    /**
     * 通过用户获取角色
     *
     * @param username
     * @return
     */
    String getRoleByUsername(String username);

    /**
     *
     * @param updateUser
     * @return
     */
    int updateUser(UpdateUserDTO updateUser);
}
